# -*- coding:utf-8 -*-
#  文件操作的作用
"""
⽂件操作包含：打开、关闭、读、写、复制.....
⽂件操作的的作⽤是：读取内容、写⼊内容、备份内容.....
⽂件操作的作⽤就是把⼀些内容(数据)存储存放起来，
可以让程序下⼀次执⾏的时候直接使⽤，⽽不必重新制作⼀份，省时省⼒。
"""

# 基本步骤
# 打开文件
# 在python，使⽤open函数，可以打开⼀个已经存在的⽂件，或者创建⼀个新⽂件，语法如下：
# 语法：open(name,mode)
# name：是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。
# mode：设置打开⽂件的模式(访问模式)：只读、写⼊、追加等。

# f = open("./demo.txt")     # 打开文件
# f.close()         # 关闭文件

"""
模式：
    r 只读：光标在开头     r+ 读写：光标在开头       rb：二进制读取    rb+
    w 覆盖写入：光标在开头  w+ 覆盖读写：光标在开头    wb：二进制覆盖    wb+
    a 追加写入：光标在结尾  a+ 读写：光标在结尾       ab:二进制追加     ab+
"""

# 读取操作
# 语法  --r
# 以只读的方式打开文件, 编码为utf-8
# f = open("./demo.txt", "r", encoding="utf-8")

# read()读取文件的所有内容
# content = f.read()
# print(content)


# readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取，
# 并且返回的是⼀个列表，其中每⼀⾏的数据为⼀个元素
# content = f.readlines()
# print(content)

# 读取一行
# content = f.readline()
# print(content)

# seek() ⽤来移动⽂件指针。
# 语法：⽂件对象.seek(偏移量, 起始位置)
# 0：⽂件开头
# 1：当前位置
# 2：⽂件结尾
# f = open("./demo.txt", "r", encoding="utf-8")
# f.seek(3, 0)
# content = f.read()
# print(content)
# f.close()

# 写入操作
# 语法 --w
# 打开文件
# f = open("./demo2.txt", "w", encoding="utf-8")
# # 写入内容
# f.write("大河之水天上来")
# # 关闭文件
# f.close()


# 语法 --a
# 打开文件
# f = open("./demo3.txt", "a", encoding="utf-8")
# # 写入内容
# f.write("大江东去浪涛尽")
# # 关闭文件
# f.close()


# 上下管理器 with...as...    操作完成之后,自动关闭当前文件
# with open("./demo3.txt", "a", encoding="utf-8") as f:
#     f.write("少陵野老")


# 语法 --r+
# with open("./demo.txt", "r+", encoding="utf-8") as f:
#     # f.write("少陵野老")
#     content = f.read()
#     print(content)

# 语法 --w+
# with open("./demo.txt", "w+", encoding="utf-8") as f:
#     f.write("少陵野老")
#     content = f.read()      # 读取时，会覆盖内容
#     print(content)

# 语法 --a+
# 绝对路径
with open("E:\\gitcode\\python-fundamentals-\\full_stack_study\\14.文件操作\\demo.txt", "a+", encoding="utf-8") as f:
    f.write("少陵野老")
    content = f.read()
    print(content)

